A computing device generally includes an operating system, which manages the various hardware and software resources of the computing device. Operating systems typically utilize one or more device drivers to control a particular hardware device of the computing device. Device drivers are software programs that act as an interface between the operating system of the computing device. Most operating systems natively expose hardware devices providing baseline capabilities of the computing device (e.g., Universal Serial Bus, wireless networking, system memory access, etc.) to applications executed by the operating system via one or more application programming interfaces (APIs) or defined interfaces, which may communicate with one or more device drivers. However, to expose hardware devices providing new and/or additional capabilities to the computing device, many operating systems require that the hardware vendor provide a proprietary device driver, which must be registered with the operating system during boot.
An increasing trend among operating system providers is to limit the number and/or type of non-native operating system capabilities allowed to be registered. For example, an operating system vendor may only permit a platform vendor (e.g., an original equipment manufacturer) to choose and register a fixed number of device drivers with the operating system. One reason for doing this is to commoditize the functionality of the computing device hardware. Security concerns may be another reason for limiting the number of non-native operating systems capabilities allowed to be registered. Whatever the reason may be, this practice threatens the ability of hardware vendors to continue developing new hardware devices and/or functionality. Additionally, such practice empowers operating system vendors and/or original equipment manufacturers to unilaterally decide which hardware devices and/or functionalities are available on a platform without input from hardware vendors.